#include "widget.h"
#include "ui_widget.h"
#include <QPaintEvent>
#include <QFont>
#include <QPen>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

void Widget::paintEvent(QPaintEvent *event)
{
    // 1. 绘制图形

    // this并不是指父控件不是挂在对象树上
    // 而是指名在哪个控件上绘制
//    QPainter painter(this);
//    // 绘制现段
//    painter.drawLine(20,20,100,20);
//    painter.drawLine(QPoint(20,40),QPoint(100,40));

//    // 绘制矩形
//    painter.drawRect(20,50,100,100);

//    // 绘制圆形/椭圆
//    painter.drawEllipse(QPoint(200,150),40,20);
//    painter.drawEllipse(QPoint(250,250),40,40);
//    painter.drawEllipse(300,300,200,200);

//    // 2. 绘制文本
//    QFont font("华文行楷",24);
//    // 设置字体样式
//    painter.setFont(font);
//    // 设置画笔颜色
//    painter.setPen(Qt::red);
//    // 画文字
//    painter.drawText(QPoint(100,100),"天行健，君子以自强不息");
//    painter.drawText(100,150,"天行健，君子以自强不息");

//    // 3. 设置画笔

//    // 实例化画家对象，this指名在哪个控件上画画
//    QPainter painter(this);

//    // 实例化 画笔对象，并设置颜色
//    QPen pen(QColor(197,31,255));
//    // 设置画笔宽度
//    pen.setWidth(3);
//    // 设置画笔风格
//    pen.setStyle(Qt::PenStyle::DashLine);

//    // 绘画者设置画笔
//    painter.setPen(pen);

//    // 4. 设置画刷
//    // 实例化画刷对象,并设置颜色
//    QBrush brush(Qt::cyan);
//    // 设置画刷风格
//    brush.setStyle(Qt::BrushStyle::Dense1Pattern);
//    // 绘画者设置画刷
//    painter.setBrush(brush);

//    // 画圆
//    painter.drawEllipse(QPoint(250,250),100,100);

//    // 5. 绘制图片
//    QPainter painter(this);
//    QPixmap pixmap(":/cat.jpg");

//    // 原大小画图
//     painter.drawPixmap(0,0,pixmap);
//    // 缩放图片 600*400  10,10 图片左上角的位置
//    // 平移图片
//    painter.translate(100,100);
//    painter.drawPixmap(10,10,600,400,pixmap);

//    // 旋转图片
//    // 顺时针旋转
//    painter.rotate(180);
//    // 800*600
//    // 800-10 600-10 在添上负号
//    painter.drawPixmap(-790,-590,600,400,pixmap);


//    // 6. 移动画家位置
//    QPainter painter(this);
//    painter.drawEllipse(QPoint(250,250),40,40);
//    // 通过移动画家位置使两个人不重叠
//    painter.translate(80,0);

//    painter.drawEllipse(QPoint(250,250),40,40);

    // 7. save 和 resore

    QPainter painter(this);
    painter.drawEllipse(QPoint(250,250),40,40);


    // 保存画家位置
    painter.save();
    // 通过移动画家位置使两个人不重叠
    painter.translate(100,0);

    painter.drawEllipse(QPoint(250,250),40,40);
    // 还原画家位置
    painter.restore();

    // 第三个圆和第一个圆相交
    painter.translate(10,0);
    painter.drawEllipse(QPoint(250,250),40,40);

}

Widget::~Widget()
{
    delete ui;
}
























